实验中,F8PPAC1-3测量靶前束流的入射方向。靶后两套望远镜系统(MUST2)测量反应产生的轻粒子,剩余重核由零度磁谱仪(ZDS)探测。为了减少散射粒子在靶内的能量损失,把靶框旋转45° 朝向望远镜摆放。靶前放置了厚铁块组成的屏蔽体,避免束流中偏离中心线的粒子达到靶后的探测系统。



另一种是single PPAC(F8PPAC3), 面积为 $100 × 100 mm^2$。

| Branch | PPAC |
|---|---|
| F8PPACRawData[0][0] | PPAC 1 Layer A $T_{x1}$ |
| F8PPACRawData[0][1] | PPAC 1 Layer A $T_{x2}$ |
| F8PPACRawData[0][2] | PPAC 1 Layer A $T_{y1}$ |
| F8PPACRawData[0][3] | PPAC 1 Layer A $T_{y2}$ |
| F8PPACRawData[0][4] | PPAC 1 Layer A $T_a$ |
| F8PPACRawData[1][0-4] | PPAC 1 Layer B |
| F8PPACRawData[2][0-4] | PPAC 2 Layer A |
| F8PPACRawData[3][0-4] | PPAC 2 Layer B |
| F8PPACRawData[4][0-4] | PPAC 3 |
上述时间信号不仅与感应信号在探测器中的传输时间相关,也与束流的到达时间(飞行时间)有关。 研究探测器的信号特征时,我们希望得到只和探测器性能有关的参数,此时参数的变化规律只与探测器特性有关,与束流的到达时间无关。
%jsroot on
TFile *ipf=new TFile("f8ppac001.root");// $HOME/data/MUST2@BigRIPS/ROOTFILE/
TTree *tree=(TTree*) ipf->Get("tree");
TCanvas *c1=new TCanvas("c1","c1");
tree->Draw("F8PPACRawData[0][0]>>hx1(1000,0,4200)");//F8PPAC1A-Tx1
tree->Draw("F8PPACRawData[0][1]>>hx2(1000,0,4200)");//F8PPAC1A-Tx2
TH1D *hx1=(TH1D*)gROOT->FindObject("hx1");
TH1D *hx2=(TH1D*)gROOT->FindObject("hx2");
hx1->SetLineColor(kBlue);
hx2->SetLineColor(kBlack);
hx1->Draw();
hx2->Draw("same");
c1->SetLogy();
c1->Draw();
tree->Draw("F8PPACRawData[0][2]>>hy1(1000,0,4200)");//F8PPAC1A-Ty1
tree->Draw("F8PPACRawData[0][3]>>hy2(1000,0,4200)");//F8PPAC1A-Ty2
TH1D *hy1=(TH1D*)gROOT->FindObject("hy1");
TH1D *hy2=(TH1D*)gROOT->FindObject("hy2");
hy1->SetLineColor(kBlue);
hy2->SetLineColor(kBlack);
hy1->Draw();
hy2->Draw("same");
c1->SetLogy();
c1->Draw();
tree->Draw("F8PPACRawData[0][4]>>ha(1000,0,4200)");//F8PPAC1A-Ta
ha->Draw();
c1->Draw();
TCut ca="Ta>200 && Ta<600";
TCut cx1="Tx1>0 && Tx1<1700" && ca;
TCut cx2="Tx2>0 && Tx2<1700" && ca;
TCut cy1="Ty1>0 && Ty1<1400" && ca;
TCut cy2="Ty2>0 && Ty2<1400" && ca;
TCut cppac=cx1 && cx2 && cy1 && cy2;
// F8PPAC
tree->SetAlias("Tx1","F8PPACRawData[0][0]");//F8PPAC1A-txl
tree->SetAlias("Tx2","F8PPACRawData[0][1]");//F8PPAC1A-txr
tree->SetAlias("Ty1","F8PPACRawData[0][2]");//F8PPAC1A-tyu
tree->SetAlias("Ty2","F8PPACRawData[0][3]");//F8PPAC1A-tyd
tree->SetAlias("Ta","F8PPACRawData[0][4]");//F8PPAC1A-Anode
tree->SetAlias("dtx1","Tx1-Ta");
tree->SetAlias("dtx2","Tx2-Ta");
tree->SetAlias("dty1","Ty1-Ta");
tree->SetAlias("dty2","Ty2-Ta");
tree->Draw("dtx1>>hdx1(1600,-100,1500)",cx1);
tree->Draw("dtx2>>hdx2(1600,-100,1500)",cx2);
TH1D *hdx1=(TH1D*)gROOT->FindObject("hdx1");
TH1D *hdx2=(TH1D*)gROOT->FindObject("hdx2");
hdx1->SetLineColor(kBlue);
hdx2->SetLineColor(kBlack);
hdx1->Draw();
hdx2->Draw("same");
c1->SetLogy();
c1->Draw();
c1->Draw();
tree->Draw("dtx1-dtx2>>(1500,-1500,1500)",cx1 && cx2);
c1->SetLogy();
c1->Draw();
$ T_{x1}+T_{x2}=2D/v+T_{delay}+(t_{o1}+t_{o1})$=$2D/v+Const.$ - 与束流速度有关
$dt_{x1}+dt_{x2}=t_{x1}+t_{x2}+(t_{o1}+t_{o2}-2t_{oa})$=$Const.$ - 与束流速度无关
tree->Draw("Tx1:Tx2>>(1000,0,2500,1000,0,2500)",cx1 && cx1,"colz");
gStyle->SetPalette(1);
c1->SetLogy(0);
c1->Draw();
tree->Draw("dtx1:dtx2>>(1600,-100,1500,1600,-100,1500)",cx1 && cx2 && ca,"colz");
gStyle->SetPalette(1);
c1->Draw();
在束流比较强的时候,需要考虑堆积(Pileup)事件的排除。堆积是由于同时有多个粒子打在PPAC上,造成delayline的x的两端的时间不是由同一个粒子给出的。
假设a,b粒子同时穿过探测器,a粒子靠近x1侧,b粒子靠近x2侧,则$T_{x1}$对应于a粒子,$T_{x2}$对应于b粒子(TDC只记录与start信号最近的信号)。此时$T_{x1}+T_{x2}<T_{delay}$。即delayline的两端信号传输时间和不再是常数。这个条件可作为信号堆积的标志。
从上述讨论可知,PPAC不产生堆积的条件是,每个粒子的时间间隔应该大于$T_{delay}$

tree->Draw("dtx1+dtx2>>hdxt(1200,400,1600)",cx1 && cx2);
hdxt->Fit("gaus","","",1130,1190);
gPad->SetLogy();
hdxt->Draw();
c1->Draw();
TF1 *fx=hdxt->GetFunction("gaus");
Double_t xpeak=fx->GetParameter(1);
Double_t xsigma=fx->GetParameter(2);
cout<<xpeak+3*xsigma<<endl;
tree->Draw("dty1+dty2>>hdyt(1200,0,1200)",cy1 && cy2 && ca);
hdyt->Fit("gaus","","",600,680);
gPad->SetLogy();
hdyt->Draw();
c1->Draw();
TF1 *fy=hdyt->GetFunction("gaus");
Double_t ypeak=fy->GetParameter(1);
Double_t ysigma=fy->GetParameter(2);
TString spileup;
spileup.Form("abs(dtx1+dtx2-%f)<3*%f",xpeak,xsigma);
TCut cxpileup=spileup.Data();
spileup.Form("abs(dty1+dty2-%f)<3*%f",ypeak,ysigma);
TCut cypileup=spileup.Data();
TCut cpileup=cxpileup && cypileup;
tree->Draw("(Tx1+Tx2)/2:Ta>>(100,250,550,200,400,1400)",cppac,"colz");
gPad->SetLogy(0);
gPad->SetLogz();
c1->Draw();
tree->Draw("(Tx1+Tx2)/2:Ta>>(100,250,550,200,400,1400)",cppac&&cpileup,"colz");
gPad->SetLogy(0);
gPad->SetLogz();
c1->Draw();
tree->Draw("dty1-dty2:dtx1-dtx2",cppac&&cpileup,"colz");
gPad->SetLogy(0);
c1->Draw();